import { type Model } from 'mongoose';
import { CreatePermMenuDto, PermMenu, PermMenuDocument, UpdatePermMenuDto } from '@ai/entity';
import { Injectable, OnModuleInit } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { arrToTree } from '@/utils';

@Injectable()
export class PermMenuService implements OnModuleInit {
    constructor(@InjectModel(PermMenu.name) private readonly permMenuModel: Model<PermMenuDocument>) {}

    onModuleInit() {
        this.permMenuModel.init();
    }

    create(createPermMenuDto: CreatePermMenuDto) {
        return this.permMenuModel.create(createPermMenuDto);
    }

    async findAll() {
        return arrToTree(await this.permMenuModel.find().exec(), 'parent');
    }

    findOne(id: string) {
        return this.permMenuModel.findById(id);
    }

    update(id: string, updatePermMenuDto: UpdatePermMenuDto) {
        return this.permMenuModel.findByIdAndUpdate(id, updatePermMenuDto);
    }

    remove(id: string) {
        return this.permMenuModel.findByIdAndDelete(id);
    }
}
